An IDE, also known as integrated design environment and integrated debugging environment, is a type of computer software that assists computer programmers to develop software. IDEs typically have a source code editor, a compiler and/or interpreter, build-automation tools and a debugger. Sometimes a version control system and various tools that simplify the construction of a GUI are integrated as well. Many IDEs also integrate a class browser, an object inspector, and a class hierarchy diagram for use with object oriented software development. Although some multiple-language IDEs are in use, typically an IDE is devoted to building software using a specific programming language. In the past, the source code for most IDEs was not published and deemed proprietary to the company owning the IDE. However, of late, IDEs that support development of software in multiple languages are available. Some of these multi-language IDEs are also open sourced so that they can be enhanced and maintained by a community of developers rather than a single corporation. Examples of multi-language open source IDEs include Eclipse and NetBeans.
Typically, a software developer pulls up the IDE at a desktop at a company's facility or dials in from a remote location over a secure or unsecure connection. The developer then writes code using the IDE, such as Java® NetBeans. The NetBeans IDE is an open-source integrated development environment written entirely in Java® using the NetBeans Platform. Currently, it is relatively easy for the developer or third party to steal code from the system running the integrated development environment by simply making a copy of the source Code by use of the network or removable media. In the present environment, it is difficult to detect such a security breach of the company's trade secrets and intellectual property (IP), the reason being that it is virtually impossible to differentiate an attempt to access the source code for legitimate reasons, i.e., software development, from an attempt to access the source code with the intent to pirate it.
There are several current practices that attempt to protect IP from theft. A developer may use a computer without a universal serial bus (USB) connection or disk drive and no external network connection to prevent copying. A project may also be split into different pieces at different locations, so that no single employee has access to the complete code base. Biometric and fingerprinting techniques may be used to track what employees are doing. Code-tracking like digital watermarking techniques may be used to track copies. However, available techniques do not provide fast automated transparent cost effective protection at the root while also protecting the source code at all times without a dependency on physical protections and without loss of developer productivity.
For example, FIG. 1 illustrates a prior art software development environment and areas of source code vulnerability. The software development environment 100 includes an corporate wide area network (corporate area) 102 includes a couple of subnets, such as an on-site development area 104 and an off-shore development area 106 in communication with each other, having a number of components, as illustrated. The corporate area 102 is also shown to be in communication with an out sourced development area 108 and a home work area 110 along with a mobile user 112. However, given this conventional software development environment 100, the corporate area 102 represents potential points of source code vulnerability to an unauthorized user (e.g., thief) 114 waiting to cause the unwanted and expensive damage.
In view of the foregoing, it may be useful to provide methods and systems that address the aforementioned and other difficulties. Other limitations of the conventional systems will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.